package cn.xzq.crm.dao;

import java.util.List;

import javax.annotation.Resource;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.stereotype.Repository;

import cn.xzq.crm.entity.LinkMan;

@Repository("linkManDaoImpl")
public class LinkManDaoImpl implements LinkManDao {
	
	@Autowired
	private HibernateTemplate hibernateTemplate;
	
	/**
	 * 添加一个联系人
	 * @param linkMan
	 */
	public void add(LinkMan linkMan){
		hibernateTemplate.save(linkMan);
	}

	/**
	 * 查找所有联系人
	 */
	public List<LinkMan> findAll() {
		List<LinkMan> list = (List<LinkMan>) hibernateTemplate.find("from LinkMan");
		return list;
	}

	/**
	 * 根据id查找一联系人
	 * @param lkmId
	 * @return
	 */
	public LinkMan findOneById(String lkmId) {
		List<LinkMan> list = (List<LinkMan>) hibernateTemplate.find("from LinkMan where lkmId=?", lkmId);
		if(list.size() != 0){
			return list.get(0);
		}
		return null;
	}
	
	/**
	 * 修改联系人
	 * @return
	 */
	public void update(LinkMan linkMan){
		hibernateTemplate.update(linkMan);
	}

	/**
	 * 删除一个联系人
	 * @return
	 */
	public void delete(LinkMan linkMan) {
		hibernateTemplate.delete(linkMan);
	}
	
	/**
	 * 多条件组合查询
	 * @param linkMan
	 * @return
	 */
	public List<LinkMan> findMoreCondition(LinkMan linkMan){
		//使用离线对象进行查询
		DetachedCriteria criteria = DetachedCriteria.forClass(LinkMan.class);
		//判断条件存在与否，加入查询参数中
		if(linkMan.getLkmName()!=null && !linkMan.getLkmName().isEmpty()){
			criteria.add(Restrictions.like("lkmName", "%"+linkMan.getLkmName()+"%"));
		}
		if(linkMan.getLkmGender()!=null && !linkMan.getLkmGender().isEmpty()){
			criteria.add(Restrictions.eq("lkmGender", linkMan.getLkmGender()));
		}
		if(linkMan.getLkmPhone()!=null && !linkMan.getLkmPhone().isEmpty()){
			criteria.add(Restrictions.like("lkmPhone", "%"+linkMan.getLkmPhone()+"%"));
		}
		if(linkMan.getLkmMobile()!=null && !linkMan.getLkmMobile().isEmpty()){
			criteria.add(Restrictions.like("lkmMobile", "%"+linkMan.getLkmMobile()+"%"));
		}
		if(linkMan.getLkmPosition()!=null && !linkMan.getLkmPosition().isEmpty()){
			criteria.add(Restrictions.like("lkmPosition", "%"+linkMan.getLkmPosition()+"%"));
		}
		if(linkMan.getLkmEmail()!=null && !linkMan.getLkmEmail().isEmpty()){
			criteria.add(Restrictions.like("lkmEmail", "%"+linkMan.getLkmEmail()+"%"));
		}
		if(linkMan.getCustomer()!=null && !linkMan.getCustomer().getCustId().isEmpty()){
			criteria.add(Restrictions.eq("customer.custId", linkMan.getCustomer().getCustId()));
		}
	
		List<LinkMan> list = (List<LinkMan>) hibernateTemplate.findByCriteria(criteria);
		System.out.println(list);

		return list;
	}
	
}
